The present invention relates generally to the implementation of business services and, more particularly, to a system and method for extracting or generating platform independent models from composite applications.
Much has been talked about code reuse but the promise of code reuse is often hard to realize. This is so because code that is built on one platform may or may not be easily translated into another platform. If the programming language requirements are different for each platform or if the applications to be developed involve integrating with several local legacy systems, then code reuse is difficult to achieve due to the sheer nature of heterogeneity. The nuances of each platform may make code reuse difficult even if the code is built using the same programming language (e.g., JAVA®) using the same standards (such as J2EE) on the source platform as is expected on the target platform. There is a tacit acknowledgement among practitioners that model reuse is more practical than code reuse. Platform independent models (PIMs) of a given set of business solutions either developed manually or extracted through automated tools from existing solutions can provide a valuable starting point for reuse. A platform independent model of a business application is a key asset for any client for future enhancements to their business processes because it gives the client a formal description of what exists. The PIM is also a key asset for IT consulting companies as well if the consulting company intends to develop pre-built solutions in certain industries.
Model driven development and code generation from models has been discussed in the literature. In a model driven development approach, given two meta-models, i.e., a source meta-model and a target meta-model and the transformation rules that can transform the source meta-model into the target meta-model, any given platform independent model that adheres to the source meta-model can be translated into a platform specific model (PSM) that adheres to the target meta-model. The resulting PSM can then be translated into various implementation artifacts on the target platform. This is called forward engineering. By reversing this approach, platform independent models can be extracted from platform specific models and implementation artifacts.
The prior art and features in vendor tools such as the IBM Rational Software Architect (RSA) provide the method and some tooling capabilities (with several gaps) to extract models. However, most of the reverse engineering has focused on extracting the structural models (e.g., class models) from implementation artifacts. For example, if a UML model were to be derived from a piece of Java code, reverse engineering techniques have looked at deriving structural models such as classes, their data members and interfaces, etc. This approach, although it works to a degree, does not provide a high-enough level of abstraction required to maximize the reusability of the extracted platform independent model in a service-oriented architecture (SOA). For example, in a service-oriented architecture, the modular reusable abstraction is defined at the level of services rather than classes. This distinction is important because abstraction at the level of services enables one to link the business functions offered by services with business objectives—this link is important to increase the reusability of PIM models as well. The reusability of the reverse-engineered models with the current state-of-the-art is diminished by the lack of proper linkages to higher level business objectives.